<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libxlsxwriter: utility.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libxlsxwriter
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_9a5cb1f80a06fe707e78a539c1c1dae8.html">xlsxwriter</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">utility.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a91acc3053f7cbe1e16872830149dc3cb"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utility_8h.html#a91acc3053f7cbe1e16872830149dc3cb">lxw_version</a> (void)</td></tr>
<tr class="memdesc:a91acc3053f7cbe1e16872830149dc3cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the library version.  <a href="utility_8h.html#a91acc3053f7cbe1e16872830149dc3cb">More...</a><br /></td></tr>
<tr class="separator:a91acc3053f7cbe1e16872830149dc3cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1be3ef9e966d0a54fcddea06583232b4"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utility_8h.html#a1be3ef9e966d0a54fcddea06583232b4">lxw_version_id</a> (void)</td></tr>
<tr class="memdesc:a1be3ef9e966d0a54fcddea06583232b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the library version ID.  <a href="utility_8h.html#a1be3ef9e966d0a54fcddea06583232b4">More...</a><br /></td></tr>
<tr class="separator:a1be3ef9e966d0a54fcddea06583232b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cebc342ea88aa9fb9fe46e26ad442d8"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utility_8h.html#a8cebc342ea88aa9fb9fe46e26ad442d8">lxw_strerror</a> (<a class="el" href="common_8h.html#a04b59aa3c578bc75f88ac16a979c5fe6">lxw_error</a> error_num)</td></tr>
<tr class="memdesc:a8cebc342ea88aa9fb9fe46e26ad442d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a libxlsxwriter error number to a string.  <a href="utility_8h.html#a8cebc342ea88aa9fb9fe46e26ad442d8">More...</a><br /></td></tr>
<tr class="separator:a8cebc342ea88aa9fb9fe46e26ad442d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac58c9e5aa239b938ef78c10c055c0f79"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utility_8h.html#ac58c9e5aa239b938ef78c10c055c0f79">lxw_datetime_to_excel_datetime</a> (<a class="el" href="structlxw__datetime.html">lxw_datetime</a> *datetime)</td></tr>
<tr class="memdesc:ac58c9e5aa239b938ef78c10c055c0f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a <a class="el" href="structlxw__datetime.html" title="Struct to represent a date and time in Excel.">lxw_datetime</a> to an Excel datetime number.  <a href="utility_8h.html#ac58c9e5aa239b938ef78c10c055c0f79">More...</a><br /></td></tr>
<tr class="separator:ac58c9e5aa239b938ef78c10c055c0f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a91acc3053f7cbe1e16872830149dc3cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91acc3053f7cbe1e16872830149dc3cb">&#9670;&nbsp;</a></span>lxw_version()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* lxw_version </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The "X.Y.Z" version string.</dd></dl>
<p>Get the library version as a "X.Y.Z" version string</p>
<div class="fragment"><div class="line">printf(<span class="stringliteral">&quot;Libxlsxwriter version = %s\n&quot;</span>, <a class="code" href="utility_8h.html#a91acc3053f7cbe1e16872830149dc3cb">lxw_version</a>());</div>
</div><!-- fragment --> 
</div>
</div>
<a id="a1be3ef9e966d0a54fcddea06583232b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1be3ef9e966d0a54fcddea06583232b4">&#9670;&nbsp;</a></span>lxw_version_id()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t lxw_version_id </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The version ID.</dd></dl>
<p>Get the library version such as "X.Y.Z" as a XYZ integer.</p>
<div class="fragment"><div class="line">printf(<span class="stringliteral">&quot;Libxlsxwriter version id = %d\n&quot;</span>, <a class="code" href="utility_8h.html#a1be3ef9e966d0a54fcddea06583232b4">lxw_version_id</a>());</div>
</div><!-- fragment --> 
</div>
</div>
<a id="a8cebc342ea88aa9fb9fe46e26ad442d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cebc342ea88aa9fb9fe46e26ad442d8">&#9670;&nbsp;</a></span>lxw_strerror()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* lxw_strerror </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="common_8h.html#a04b59aa3c578bc75f88ac16a979c5fe6">lxw_error</a>&#160;</td>
          <td class="paramname"><em>error_num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The <code>lxw_strerror</code> function converts a libxlsxwriter error number defined by <a class="el" href="common_8h.html#a96384aee66a82d783d695374078e1ea9" title="Error codes from libxlsxwriter functions.">lxw_error</a> to a pointer to a string description of the error. Similar to the standard library strerror(3) function.</p>
<p>For example:</p>
<div class="fragment"><div class="line"><a class="code" href="common_8h.html#a04b59aa3c578bc75f88ac16a979c5fe6">lxw_error</a> error = <a class="code" href="workbook_8h.html#ad9e7aeebc0fd43562db5bcd527b2ee5e">workbook_close</a>(workbook);</div>
<div class="line"> </div>
<div class="line"><span class="keywordflow">if</span> (error)</div>
<div class="line">    printf(<span class="stringliteral">&quot;Error in workbook_close().\n&quot;</span></div>
<div class="line">           <span class="stringliteral">&quot;Error %d = %s\n&quot;</span>, error, <a class="code" href="utility_8h.html#a8cebc342ea88aa9fb9fe46e26ad442d8">lxw_strerror</a>(error));</div>
</div><!-- fragment --><p>This would produce output like the following if the target file wasn't writable: </p><pre class="fragment">Error in workbook_close().
Error 2 = Error creating output xlsx file. Usually a permissions error.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">error_num</td><td>The error number returned by a libxlsxwriter function.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to a statically allocated string. Do not free. </dd></dl>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="anatomy_8c-example.html#a12">anatomy.c</a>.</dd>
</dl>

</div>
</div>
<a id="ac58c9e5aa239b938ef78c10c055c0f79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac58c9e5aa239b938ef78c10c055c0f79">&#9670;&nbsp;</a></span>lxw_datetime_to_excel_datetime()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double lxw_datetime_to_excel_datetime </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structlxw__datetime.html">lxw_datetime</a> *&#160;</td>
          <td class="paramname"><em>datetime</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">datetime</td><td>A pointer to a <a class="el" href="structlxw__datetime.html" title="Struct to represent a date and time in Excel.">lxw_datetime</a> struct.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A double representing an Excel datetime.</dd></dl>
<p>The <code>lxw_datetime_to_excel_datetime()</code> function converts a datetime in <a class="el" href="structlxw__datetime.html" title="Struct to represent a date and time in Excel.">lxw_datetime</a> to and Excel datetime number:</p>
<div class="fragment"><div class="line"><a class="code" href="structlxw__datetime.html">lxw_datetime</a> datetime = {2013, 2, 28, 12, 0, 0.0};</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">double</span> excel_datetime = lxw_datetime_to_excel_date(&amp;datetime);</div>
</div><!-- fragment --><p>See <a class="el" href="working_with_dates.html">Working with Dates and Times</a> for more details on the Excel datetime format. </p>

</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ad510ac6df573d23203374e24dba373d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad510ac6df573d23203374e24dba373d2">&#9670;&nbsp;</a></span>CELL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CELL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cell</td><td>)</td>
          <td>&#160;&#160;&#160;    lxw_name_to_row(cell), lxw_name_to_col(cell)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convert an Excel <code>A1</code> cell string into a <code>(row, col)</code> pair.</p>
<p>This is a little syntactic shortcut to help with worksheet layout:</p>
<div class="fragment"><div class="line"><a class="code" href="worksheet_8h.html#ac208046e7a6d12cc87982422efa41b31">worksheet_write_string</a>(worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;A1&quot;</span>), <span class="stringliteral">&quot;Foo&quot;</span>, NULL);</div>
<div class="line"> </div>
<div class="line"><span class="comment">//Same as:</span></div>
<div class="line"><a class="code" href="worksheet_8h.html#ac208046e7a6d12cc87982422efa41b31">worksheet_write_string</a>(worksheet, 0, 0,       <span class="stringliteral">&quot;Foo&quot;</span>, NULL);</div>
</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd></dd></dl>
<p>This macro shouldn't be used in performance critical situations since it expands to two function calls. </p>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="chart_8c-example.html#a10">chart.c</a>, <a class="el" href="chart_area_8c-example.html#a3">chart_area.c</a>, <a class="el" href="chart_bar_8c-example.html#a3">chart_bar.c</a>, <a class="el" href="chart_clustered_8c-example.html#a17">chart_clustered.c</a>, <a class="el" href="chart_column_8c-example.html#a3">chart_column.c</a>, <a class="el" href="chart_data_labels_8c-example.html#a21">chart_data_labels.c</a>, <a class="el" href="chart_data_table_8c-example.html#a3">chart_data_table.c</a>, <a class="el" href="chart_data_tools_8c-example.html#a3">chart_data_tools.c</a>, <a class="el" href="chart_doughnut_8c-example.html#a3">chart_doughnut.c</a>, <a class="el" href="chart_fonts_8c-example.html#a27">chart_fonts.c</a>, <a class="el" href="chart_line_8c-example.html#a3">chart_line.c</a>, <a class="el" href="chart_pattern_8c-example.html#a29">chart_pattern.c</a>, <a class="el" href="chart_pie_8c-example.html#a3">chart_pie.c</a>, <a class="el" href="chart_radar_8c-example.html#a3">chart_radar.c</a>, <a class="el" href="chart_scatter_8c-example.html#a3">chart_scatter.c</a>, <a class="el" href="chartsheet_8c-example.html#a3">chartsheet.c</a>, <a class="el" href="comments2_8c-example.html#a12">comments2.c</a>, <a class="el" href="conditional_format1_8c-example.html#a5">conditional_format1.c</a>, <a class="el" href="conditional_format2_8c-example.html#a11">conditional_format2.c</a>, <a class="el" href="data_validate_8c-example.html#a3">data_validate.c</a>, <a class="el" href="diagonal_border_8c-example.html#a15">diagonal_border.c</a>, <a class="el" href="ignore_errors_8c-example.html#a5">ignore_errors.c</a>, <a class="el" href="image_buffer_8c-example.html#a7">image_buffer.c</a>, <a class="el" href="images_8c-example.html#a7">images.c</a>, <a class="el" href="outline_8c-example.html#a14">outline.c</a>, <a class="el" href="outline_collapsed_8c-example.html#a5">outline_collapsed.c</a>, and <a class="el" href="rich_strings_8c-example.html#a19">rich_strings.c</a>.</dd>
</dl>

</div>
</div>
<a id="a189672bfa9c380a28d8db8c40de17fe8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a189672bfa9c380a28d8db8c40de17fe8">&#9670;&nbsp;</a></span>COLS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define COLS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cols</td><td>)</td>
          <td>&#160;&#160;&#160;    lxw_name_to_col(cols), lxw_name_to_col_2(cols)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convert an Excel <code>A:B</code> column range into a <code>(col1, col2)</code> pair.</p>
<p>This is a little syntactic shortcut to help with worksheet layout:</p>
<div class="fragment"><div class="line"><a class="code" href="worksheet_8h.html#a9656e4e05d3787eee6b3e4d8e82d9b7f">worksheet_set_column</a>(worksheet, <a class="code" href="utility_8h.html#a189672bfa9c380a28d8db8c40de17fe8">COLS</a>(<span class="stringliteral">&quot;B:D&quot;</span>), 20, NULL, NULL);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Same as:</span></div>
<div class="line"><a class="code" href="worksheet_8h.html#a9656e4e05d3787eee6b3e4d8e82d9b7f">worksheet_set_column</a>(worksheet, 1, 3,        20, NULL, NULL);</div>
</div><!-- fragment --> <dl class="section examples"><dt>Examples</dt><dd><a class="el" href="hide_row_col_8c-example.html#a11">hide_row_col.c</a>, <a class="el" href="images_8c-example.html#a5">images.c</a>, <a class="el" href="outline_8c-example.html#a10">outline.c</a>, and <a class="el" href="outline_collapsed_8c-example.html#a3">outline_collapsed.c</a>.</dd>
</dl>

</div>
</div>
<a id="a4dbbdfc9b616195c799dee78e727cecc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dbbdfc9b616195c799dee78e727cecc">&#9670;&nbsp;</a></span>RANGE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RANGE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">range</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">    lxw_name_to_row(range), lxw_name_to_col(range), \</div>
<div class="line">    lxw_name_to_row_2(range), lxw_name_to_col_2(range)</div>
</div><!-- fragment --><p>Convert an Excel <code>A1:B2</code> range into a <code>(first_row, first_col, last_row, last_col)</code> sequence.</p>
<p>This is a little syntactic shortcut to help with worksheet layout.</p>
<div class="fragment"><div class="line"><a class="code" href="worksheet_8h.html#ab92116759b56cd67419febf6e0aa2c9e">worksheet_print_area</a>(worksheet, 0, 0, 41, 10); <span class="comment">// A1:K42.</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// Same as:</span></div>
<div class="line"><a class="code" href="worksheet_8h.html#ab92116759b56cd67419febf6e0aa2c9e">worksheet_print_area</a>(worksheet, <a class="code" href="utility_8h.html#a4dbbdfc9b616195c799dee78e727cecc">RANGE</a>(<span class="stringliteral">&quot;A1:K42&quot;</span>));</div>
</div><!-- fragment --> <dl class="section examples"><dt>Examples</dt><dd><a class="el" href="array_formula_8c-example.html#a6">array_formula.c</a>, <a class="el" href="conditional_format1_8c-example.html#a18">conditional_format1.c</a>, and <a class="el" href="conditional_format2_8c-example.html#a19">conditional_format2.c</a>.</dd>
</dl>

</div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ad510ac6df573d23203374e24dba373d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(cell)&#160;&#160;&#160;    lxw_name_to_row(cell), lxw_name_to_col(cell)</td></tr>
<tr class="memdesc:ad510ac6df573d23203374e24dba373d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Excel <code>A1</code> cell string into a <code>(row, col)</code> pair.  <a href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">More...</a><br /></td></tr>
<tr class="separator:ad510ac6df573d23203374e24dba373d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a189672bfa9c380a28d8db8c40de17fe8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utility_8h.html#a189672bfa9c380a28d8db8c40de17fe8">COLS</a>(cols)&#160;&#160;&#160;    lxw_name_to_col(cols), lxw_name_to_col_2(cols)</td></tr>
<tr class="memdesc:a189672bfa9c380a28d8db8c40de17fe8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Excel <code>A:B</code> column range into a <code>(col1, col2)</code> pair.  <a href="utility_8h.html#a189672bfa9c380a28d8db8c40de17fe8">More...</a><br /></td></tr>
<tr class="separator:a189672bfa9c380a28d8db8c40de17fe8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dbbdfc9b616195c799dee78e727cecc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utility_8h.html#a4dbbdfc9b616195c799dee78e727cecc">RANGE</a>(range)</td></tr>
<tr class="memdesc:a4dbbdfc9b616195c799dee78e727cecc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Excel <code>A1:B2</code> range into a <code>(first_row, first_col, last_row, last_col)</code> sequence.  <a href="utility_8h.html#a4dbbdfc9b616195c799dee78e727cecc">More...</a><br /></td></tr>
<tr class="separator:a4dbbdfc9b616195c799dee78e727cecc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<div class="ttc" id="aworkbook_8h_html_ad9e7aeebc0fd43562db5bcd527b2ee5e"><div class="ttname"><a href="workbook_8h.html#ad9e7aeebc0fd43562db5bcd527b2ee5e">workbook_close</a></div><div class="ttdeci">lxw_error workbook_close(lxw_workbook *workbook)</div><div class="ttdoc">Close the Workbook object and write the XLSX file.</div></div>
<div class="ttc" id="autility_8h_html_a91acc3053f7cbe1e16872830149dc3cb"><div class="ttname"><a href="utility_8h.html#a91acc3053f7cbe1e16872830149dc3cb">lxw_version</a></div><div class="ttdeci">const char * lxw_version(void)</div><div class="ttdoc">Retrieve the library version.</div></div>
<div class="ttc" id="autility_8h_html_a8cebc342ea88aa9fb9fe46e26ad442d8"><div class="ttname"><a href="utility_8h.html#a8cebc342ea88aa9fb9fe46e26ad442d8">lxw_strerror</a></div><div class="ttdeci">char * lxw_strerror(lxw_error error_num)</div><div class="ttdoc">Converts a libxlsxwriter error number to a string.</div></div>
<div class="ttc" id="autility_8h_html_a1be3ef9e966d0a54fcddea06583232b4"><div class="ttname"><a href="utility_8h.html#a1be3ef9e966d0a54fcddea06583232b4">lxw_version_id</a></div><div class="ttdeci">uint16_t lxw_version_id(void)</div><div class="ttdoc">Retrieve the library version ID.</div></div>
<div class="ttc" id="aworksheet_8h_html_ab92116759b56cd67419febf6e0aa2c9e"><div class="ttname"><a href="worksheet_8h.html#ab92116759b56cd67419febf6e0aa2c9e">worksheet_print_area</a></div><div class="ttdeci">lxw_error worksheet_print_area(lxw_worksheet *worksheet, lxw_row_t first_row, lxw_col_t first_col, lxw_row_t last_row, lxw_col_t last_col)</div><div class="ttdoc">Set the print area for a worksheet.</div></div>
<div class="ttc" id="acommon_8h_html_a04b59aa3c578bc75f88ac16a979c5fe6"><div class="ttname"><a href="common_8h.html#a04b59aa3c578bc75f88ac16a979c5fe6">lxw_error</a></div><div class="ttdeci">lxw_error</div><div class="ttdoc">Error codes from libxlsxwriter functions.</div><div class="ttdef"><b>Definition:</b> common.h:62</div></div>
<div class="ttc" id="autility_8h_html_a4dbbdfc9b616195c799dee78e727cecc"><div class="ttname"><a href="utility_8h.html#a4dbbdfc9b616195c799dee78e727cecc">RANGE</a></div><div class="ttdeci">#define RANGE(range)</div><div class="ttdoc">Convert an Excel A1:B2 range into a (first_row, first_col, last_row, last_col) sequence.</div><div class="ttdef"><b>Definition:</b> utility.h:82</div></div>
<div class="ttc" id="autility_8h_html_a189672bfa9c380a28d8db8c40de17fe8"><div class="ttname"><a href="utility_8h.html#a189672bfa9c380a28d8db8c40de17fe8">COLS</a></div><div class="ttdeci">#define COLS(cols)</div><div class="ttdoc">Convert an Excel A:B column range into a (col1, col2) pair.</div><div class="ttdef"><b>Definition:</b> utility.h:63</div></div>
<div class="ttc" id="astructlxw__datetime_html"><div class="ttname"><a href="structlxw__datetime.html">lxw_datetime</a></div><div class="ttdoc">Struct to represent a date and time in Excel.</div><div class="ttdef"><b>Definition:</b> common.h:152</div></div>
<div class="ttc" id="aworksheet_8h_html_ac208046e7a6d12cc87982422efa41b31"><div class="ttname"><a href="worksheet_8h.html#ac208046e7a6d12cc87982422efa41b31">worksheet_write_string</a></div><div class="ttdeci">lxw_error worksheet_write_string(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col, const char *string, lxw_format *format)</div><div class="ttdoc">Write a string to a worksheet cell.</div></div>
<div class="ttc" id="aworksheet_8h_html_a9656e4e05d3787eee6b3e4d8e82d9b7f"><div class="ttname"><a href="worksheet_8h.html#a9656e4e05d3787eee6b3e4d8e82d9b7f">worksheet_set_column</a></div><div class="ttdeci">lxw_error worksheet_set_column(lxw_worksheet *worksheet, lxw_col_t first_col, lxw_col_t last_col, double width, lxw_format *format)</div><div class="ttdoc">Set the properties for one or more columns of cells.</div></div>
<div class="ttc" id="autility_8h_html_ad510ac6df573d23203374e24dba373d2"><div class="ttname"><a href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a></div><div class="ttdeci">#define CELL(cell)</div><div class="ttdoc">Convert an Excel A1 cell string into a (row, col) pair.</div><div class="ttdef"><b>Definition:</b> utility.h:45</div></div>
<!-- HTML footer for doxygen 1.8.20-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Copyright 2014-2020 John McNamara.
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20
</small></address>
</body>
</html>
